/**
 * Clase que representa la estructura de la tabla en un objeto Java. Cada
 * atributo de la tabla es creado como variables y su formato como anotaciones
 *
 * @version 1.0, 25/04/12
 * @author avbravo mod:Francisco Marchenea
 */
package person.professional;

import java.util.Date;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import system.general.Columna;

@ManagedBean(name = "person_professionalBeans")
@RequestScoped
public class Beans {

    @Columna(nombre = "id", tipo = "Integer")
    private Integer id = 0;
    @Columna(nombre = "inicio", tipo = "Date")
    private Date inicio = new java.util.Date();
    @Columna(nombre = "fin", tipo = "Date")
    private Date fin = new java.util.Date();
    @Columna(nombre = "empresa", tipo = "String")
    private String empresa = "";
    @Columna(nombre = "referencia", tipo = "text")
    private String referencia = "";
    @Columna(nombre = "id_persona", tipo = "Integer")
    private Integer id_persona = 0;
    @Columna(nombre = "id_pais", tipo = "Integer")
    private Integer id_pais = 0;
    @Columna(nombre = "idl_cargo", tipo = "Integer")
    private Integer idl_cargo = 0;
    @Columna(nombre = "departamento", tipo = "String")
    private String departamento = "";
    @Columna(nombre = "detalle", tipo = "String")
    private String detalle = "";
    private location.general.Beans countryBeans = new location.general.Beans();

    public Beans() {
    }

    /**
     * Método constructor que asigna todos los valores del registro de un
     * usuario
     *
     * @param id Atributo que identifica la llave primaria (Autosecuencia)
     * @param inicio Atributo del usuario para el login
     * @param fin Atributo que identifica la contraseña
     * @param empresa Atributo que identifica el idioma
     * @param lugar Atributo que identifica la fecha de login
     * @param id_persona Atributo que identifica la fecha de finalizar session
     * @param id_pais Atributo que identifica si puede o no hacer login
     * @param idl_cargo Atributo que identifica si puede o no hacer login
     */
    public Beans(int id, Date inicio, Date fin, String empresa, String referencia, int id_persona, int id_pais, int idl_cargo, String departamento, String detalle, String nombrePais) {
        this.id = id;
        this.inicio = inicio;
        this.fin = fin;
        this.empresa = empresa;
        this.referencia = referencia;
        this.id_persona = id_persona;
        this.id_pais = id_pais;
        this.idl_cargo = idl_cargo;
        this.departamento = departamento;
        this.detalle = detalle;
        this.countryBeans.setNombre(nombrePais);
    }

    /**
     * Método que permite inicializar todas las variables
     */
    public void clearBeans() {
        id = 0;
        setInicio(new java.util.Date());
        setFin(new java.util.Date());
        setEmpresa("");
        setReferencia("");
        setId_persona((Integer) 0);
        setId_pais((Integer) 0);
        setIdl_cargo((Integer) 0);
        setDepartamento("");
        setDetalle("");
        countryBeans.clearBeans();
    }

    /**
     * Método que permite sustituir caracteres especiales que puedan afectar las
     * sentencias SQL. por ejemplo: ('), (/). Debe ser utilizado en el (set) de
     * los atributos tipo String.
     *
     * @param data cualquier dato tipo String
     * @return Devuelve el dato con la sustitución de caracteres especiales
     */
    private String strScape(String data) {
        data = data.trim();
        data = data.replace("'", "''");
        data = data.replace("\\", "\\\\");
        return data;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return this.id;
    }

    public void setId_persona(Integer id_persona) {
        this.id_persona = id_persona;
    }

    public Integer getId_persona() {
        return this.id_persona;
    }

    public Date getInicio() {
        return inicio;
    }

    public void setInicio(Date inicio) {
        this.inicio = inicio;
    }

    public Date getFin() {
        return fin;
    }

    public void setFin(Date fin) {
        this.fin = fin;
    }

    public String getEmpresa() {
        return empresa;
    }

    public void setEmpresa(String empresa) {
        this.empresa = strScape(empresa);
    }

    public Integer getId_pais() {
        return id_pais;
    }

    public void setId_pais(Integer id_pais) {
        this.id_pais = id_pais;
    }

    public Integer getIdl_cargo() {
        return idl_cargo;
    }

    public void setIdl_cargo(Integer idl_cargo) {
        this.idl_cargo = idl_cargo;
    }

    public String getReferencia() {
        return referencia;
    }

    public void setReferencia(String referencia) {
        this.referencia = strScape(referencia);
    }

    public String getDepartamento() {
        return departamento;
    }

    public void setDepartamento(String departamento) {
        this.departamento = strScape(departamento);
    }

    public String getDetalle() {
        return detalle;
    }

    public void setDetalle(String detalle) {
        this.detalle = detalle;
    }

    public location.general.Beans getCountryBeans() {
        return countryBeans;
    }
}
